iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0
Software Development

從Java進入AWS部署RESTful API的心路歷程系列 第 26

Day26-概論(十四)DynamoDBSaveExpression

  • 分享至 

  • xImage
  •  

在儲存時我們還遇到一些問題,比如說除非若想更新項目,如果直接儲存任何來自於request的資料,若是實際上給的id並不存在於資料庫主索引當中,就會當作是新增項目。對於這種問題我們有兩種做法:

  1. 所有操作項目前先進行getItem/load取得當前項目資料後,進行比對邏輯。
  2. save同時給予條件式,僅在符合條件時進行儲存。

除非是需要讀取當下的值,而後對資料進行較特別的處理,否則先讀取值就是多一次資料操作。而本篇來看一下save時可使用的DynamoDBSaveExpression內容。

DynamoDBSaveExpression

DynamoDBSaveExpression

SaveExpression主要提供檢查屬性值,save作業前檢核條件符合時,才進行儲存項目

Expected

不論是以下何種method,皆是設定要檢查的屬性

  • setExpected - 以Map使用set方法設定期望屬性的值
  • withExpected - 以Map使用with方法設定期望屬性的值
  • withExpectedEntry - 設定單一期望屬性的值

而給予的參數皆為提供attributeName以及ExpectedAttributeValue

ExpectedAttributeValue

ExpectedAttributeValue

設定檢查值的條件,大致上提供如

  • Exists - 是否存在屬性
  • Value - 要比對的單一值
  • AttributeValueList - 比對值的清單
  • ComparisonOperator - 條件比對運算子

舉例來說,若需要條件為,當pk_id有相同的值時才進行儲存,也就是限定只更新已存在的項目。

JDynamoDBSaveExpression expr = new DynamoDBSaveExpression().withExpectedEntry("pk_id", new ExpectedAttributeValue(new AttributeValue(person_id)));

ConditionalOperator

expression有多個條件時,設定各條件聯集方式為AND或OR


上一篇
Day25-概論(十三)DynamoDBMapperConfig
下一篇
Day27-實作(八)條件式save & update
系列文
從Java進入AWS部署RESTful API的心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言